package cn.tedu.smartos.admin.service;

import cn.tedu.smartos.admin.pojo.dto.*;
import cn.tedu.smartos.admin.pojo.vo.NoticeVO;
import cn.tedu.smartos.admin.pojo.vo.RegionVO;
import cn.tedu.smartos.baseuser.pojo.vo.UserVO;
import cn.tedu.smartos.admin.pojo.vo.VolunteerVO;
import com.github.pagehelper.PageInfo;

import java.util.List;


public interface AdminService {
    // 用户列表
    PageInfo<UserVO> list(Integer pageNum, Integer pageSize);
    // 用户详情
    UserVO detail(Long userId);
    // 删除用户
    void delete(List<Long> userIds);
    // 更新用户信息
    void update(AdminUpdateParam updateParam);
    // 添加用户或管理员
    void add(AdminAddParam addParam);
    //管理员重置密码
    void resetPassword(Long userId);
//—————————————————————————————————————————————————————————————————————————
    // 查询所有志愿者
    PageInfo<VolunteerVO> volunteerList(Integer pageNum, Integer pageSize);
    // 查询待自己审核的志愿者
    PageInfo<VolunteerVO> waitAudit(Long auditAdminId, Integer pageNum, Integer pageSize);
    // 审核志愿者
    void audit(VolunteerAuditParam auditParam);
    // 查看志愿者详情
    VolunteerVO volunteerDetail(Long userId);
//—————————————————————————————————————————————————————————————————————————
    // 所有公告列表
    PageInfo<NoticeVO> noticeList(Integer pageNum, Integer pageSize);
    // 删除公告(可批量)
    void deleteNotice(List<Long> noticeIds);
    // 添加公告
    void addNotice(NoticeAddParam addParam);
    // 修改公告
    void updateNotice(NoticeUpdateParam updateParam);
    // 查看公告详情
    NoticeVO noticeDetail(Long noticeId);
//—————————————————————————————————————————————————————————————————————————
    // 区域列表
    PageInfo<RegionVO> regionList(Integer pageNum, Integer pageSize);
    // 添加区域
    void addRegion(RegionParam addParam);
    // 删除区域(可批量)
    void deleteRegion(List<Integer> regionIds);
    // 区域详情
    RegionVO regionDetail(Integer regionId);
    // 绑定管理员到区域
    void adminBind(Long adminId, Integer regionId);
    // 解绑管理员与区域
    void adminUnbind(Long adminRegionId);
}
